package com.my.object.pool;

/**
 * Created by ZhongGang
 * at 2018/7/23 10:23
 * <p>
 * 对象池
 */
public interface ObjectPool<V> {

    //创建一个实例
    V create();

    //从对象池中借用一个实例
    V borrow();

    //向对象池归还一个实例，针对无状态对象，直接向对象池归还实例即可
    void returnBack(V v);

    //向对象池归还一个实例，针对有状态对象，如果在借用时更改了对象状态，需要在归还时重置对象
    void returnBack(V v, ReturnBackRestorer restorer);
}
